<div ng-switch="column.type">
    <span ng-switch-when="undefined" ng-bind="row[column.id]"></span>
    <span ng-switch-when="formula" ng-bind="row[column.id].value"></span>
    <span ng-switch-when="registrationStatus" ng-bind="row[column.id]"
          class="batch-status status-{{row[column.id]}}"></span>
    <span ng-switch-when="date" ng-if="row[column.id]"
          ng-bind="row[column.id] | date: 'MMM DD, YYYY HH:mm:ss z'"></span>
    <span ng-switch-when="primitive" ng-if="row[column.id] && !column.showDefault"
          ng-bind="row[column.id] | customNumber:'-':column.sigDigits">
        </span>
    <div ng-switch-when="image"
         ng-style="{width: column.width}">
        <img class="img-fill"
             ng-src="data:image/svg+xml;base64,{{row[column.id].image}}"
             alt="Image is unavailable.">
    </div>
    <div ng-switch-when="boolean"
         ng-class="{'entered-value': row[column.id].entered}">
        <simple-checkbox model="row[column.id]"></simple-checkbox>
    </div>
    <simple-radio ng-switch-when="radio" ng-click="$event.stopPropagation()">
        <input ng-disabled="row[column.id].readonly"
               ng-checked="row[column.id].value"
               ng-click="vm.onClickRadio(column, row, row[column.id]);">
        <label></label>
    </simple-radio>
    <a ng-switch-when="string" ng-if="!row[column.id].readonly"
       ng-class="{disabled: vm.isReadonly || !!row.registrationStatus}"
       ng-click="vm.isReadonly || !!row.registrationStatus || column.onClick({model: row[column.id], row: row, column: column.id})"
       ng-bind="row[column.realId].asString || '&mdash;'">
    </a>
    <editable-cell ng-switch-default
                   is-editing="$id === vm.editingCellId"
                   is-readonly="column.noDisableable ? false : column.readonly || vm.isReadonly || !!row.registrationStatus"
                   on-start-edit="vm.startEdit($id)"
                   on-close="vm.onClose(column, data)">
    </editable-cell>
</div>
